// 高精度快速幂
// 测试链接 ：https://www.luogu.com.cn/problem/P1045
// 相关帖子 ：https://www.cnblogs.com/dx123/p/16662200.html
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 500;
int a[MAXN << 1];
int t[MAXN << 1];
int ans[MAXN << 1];
int p;

// 高精度乘法 c = a * b
void mul(int* a, int* b, int* c)
{
    memset(t, 0, sizeof t);
    for(int i = 0; i < MAXN; ++i)
    {
        for(int j = 0; j < MAXN; ++j)
        {
            t[i + j] += a[i] * b[j];
            t[i + j + 1] += t[i + j] / 10;
            t[i + j] %= 10;
        }
    }
    memcpy(c,t,sizeof(t));
}

// 快速幂
void quickPow(int p)
{
    ans[0] = 1, a[0] = 2;
    while(p)
    {
        if(p & 1) mul(ans, a, ans);
        mul(a, a, a);
        p >>= 1;
    }
    // 2 ^ p - 1
    --ans[0]; // 修正个位
}

int main()
{
    scanf("%d", &p);
    printf("%d\n", int(p * log10(2)) + 1);
    quickPow(p);
    for(int i = 0, k = 499; i < 10; ++i)
    {
        for(int j = 0; j < 50; j++, k--) printf("%d", ans[k]);
        puts("");
    }

    return 0;
}